extends AnimationPlayer
#######高级封装




func 切换章节_并丢弃(场景自己:Node,路径:String)->void:
	var a=转场
	a.加载完毕.connect(func (_c):场景自己.queue_free(),CONNECT_ONE_SHOT)
	a.切换章节(路径)
##场景自己  当前场景  ,  函数 返回触发
func 切换章节_之后返回(场景自己:Node,路径:String,函数:Callable)->void:
	var a=转场
	var parent=场景自己.get_parent()
	if not parent:
		parent=场景自己.get_tree().root
		print_debug("异常")
	a.加载完毕.connect(func (_c):parent.remove_child(场景自己),CONNECT_ONE_SHOT)
	var c=await  a.切换章节(路径)
	c.tree_exited.connect(func ():
		parent.add_child(场景自己)
		if 函数 is Callable:函数.call()
		)
func 切换章节_之后返回_丢弃(场景自己:Node)->void: ###与 切换章节_之后返回 是一对
	play("入场")
	入场.emit()
	await animation_finished
	场景自己.tree_exited.connect(func ():play("退场"))
	场景自己.queue_free()
#######基础
	
signal 入场  ##入场开始
signal 加载完毕(Node)  ### 入场结束  下一个场景,加载完成
signal 退场  ##退场完毕
func 切换章节(路径:String)->Node:  ##返回新场景
	play("入场")
	入场.emit()
	await animation_finished
	var b:PackedScene=load(路径)
	var c=b.instantiate()
	c.ready.connect(func ():
		加载完毕.emit(c)
		play("退场")
		await animation_finished
		退场.emit()
		)
	get_tree().root.add_child(c)
	return c
	
